In a typical prior art electronic messaging system, such as an email system, as shown in FIG. 1, an application program 101 sends a message request to a message server 103 and then waits until it receives a confirmation from the message server 103 that the message has been sent or it receives an error message that the message server 103 cannot transmit the message. Depending on its workload, the message server 103 may not respond quickly and therefore the application program 101 may wait for a long period of time for a response. One solution to the problem of slow turnaround times is to have the application program 101 queue the messages it wants to send and then send multiple requests to the message server 103 at one time. Queuing the messages allows the application program 101 to continue to do other things until it accumulates an appropriate number of messages, but the application program 101 must still wait for the message server 103 to respond once the queued message requests have been sent to the server 103.
However, when the message server 103 is non-operational, the application program 101 will wait indefinitely for a response whether it is sending single or queued message requests. To prevent such a scenario, the application program 101 commonly waits for a predetermined amount of time and then resubmits the message request(s) under the assumption that the message server 103 has failed. However, if the message server 103 is merely overloaded, the original message will still be in an outgoing queue on the message server 103 and therefore each re-submitted message will be sent twice, or possibly several times.
Thus, traditional prior art message systems are inefficient because of the delay imposed on the application programs by the message server and common approaches to reduce the delay introduce different inefficiencies into the message systems.